package com.zmn.oms.dubbo.dto.zmn.order;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.zmn.oms.common.constant.OrderTagConsts;
import com.zmn.oms.common.dro.tag.OrderTagDRO;
import com.zmn.oms.dubbo.dto.zmn.serviceitem.OrderServiceItemDRO;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 类描述：工单信息
 *
 * @author lujia
 * @date 2018/11/29 23:29
 */
@Data
@ToString
public class OrderDRO implements Serializable {

    /**
     * 工单产品集合
     */
    List<OrderProductDRO> productList;

    /**
     * 订单类型：1 新单、2 返修单
     */
    private Integer type;

    /**
     * 下单平台
     */
    private Integer plat;

    /**
     * 服务平台
     */
    private Integer platWork;

    /**
     * 订单Id
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long orderId;

    /**
     * 工单Id
     */
    @JSONField(serializeUsing = ToStringSerializer.class)
    private Long workId;

    /**
     * 组织结构一级节点
     */
    private Integer orgOneId;

    /**
     * 组织结构二级节点
     */
    private Integer orgTwoId;

    /**
     * 组织结构三级节点
     */
    private Integer orgThreeId;

    /**
     * 组织结构四级节点
     */
    private Integer orgFourId;

    /**
     * 一级渠道id
     */
    private Integer channelOneId;

    /**
     * 二级渠道id
     */
    private Integer channelTwoId;

    /**
     * 渠道Id
     */
    private Integer channelId;

    /**
     * 渠道名称
     */
    private String channelName;

    /**
     * 省份Id
     */
    private Integer provinceId;

    /**
     * 省份名称
     */
    private String provinceName;

    /**
     * 城市Id
     */
    private Integer cityId;

    /**
     * 城市名称
     */
    private String cityName;

    /**
     * 区县Id
     */
    private Integer countryId;

    /**
     * 区县名称
     */
    private String countryName;

    /**
     * 街道Id
     */
    private Integer streetId;

    /**
     * 标准地址
     */
    private String street;

    /**
     * 地址
     */
    private String address;

    /**
     * 子公司Id
     */
    @Deprecated
    private Integer compantyId;

    /**
     * 是否为会员产品单：1不是会员产品单：2是会员产品单
     */
    private Integer member;

    /**
     * 子公司Id
     */
    private Integer companyId;
    /**
     * 公司名称
     */
    private String companyName;

    /**
     * 服务公司Id
     */
    private Integer manageCompanyId;
    /**
     * 服务公司名称
     */
    private String manageCompanyame;

    /**
     * 行政子公司ID
     */
    private Integer gridCompanyId;

    /**
     * 行政子公司名称
     */
    private String gridCompanyName;

    /**
     * 行政服务商ID（网格所属服务商）
     */
    private Integer gridManageCompanyId;

    /**
     * 行政服务商名称（网格所属服务商）
     */
    private String gridManageCompanyName;

    /**
     * 接单员Id
     */
    private Long reciverId;

    /**
     * 派单员Id
     */
    private Long distributeId;

    /**
     * 工程师Id
     */
    private Integer masterId;

    /**
     * 工程师名称
     */
    private String masterName;

    /**
     * 工程师电话
     */
    private String masterPhone;

    /**
     * 工单工程师照片
     */
    private String masterSrc;

    /**
     * 从工程师列表
     */
    private List<OrderMasterDRO> masterList;

    /**
     * 服务分类Id
     */
    private Integer servCategId;


    /**
     * 服务分类名称
     */
    private String servCategName;

    /**
     * 前台产品服务分类名称
     */
    private String showServCategName;

    /**
     * 一级品类Id
     */
    private Integer categOneId;

    /**
     * 前台产品一级分类id
     */
    private Integer showCategOneId;

    /**
     * 前台产品一级分类名称
     */
    private String showCategOneName;

    /**
     * 二级品类Id
     */
    private Integer categId;

    /**
     * 前台产品二级分类id
     */
    private Integer showCategId;

    /**
     * 前台产品二级分类名称
     */
    private String showCategName;

    /**
     * 产品一级品类
     */
    private String categOneName;

    /**
     * 用户id
     */
    private Long userId;

    /**
     * 用户名
     */
    private String userName;

    /**
     * 联系人
     */
    private String contactName;

    /**
     * 用户电话
     */
    private String userPhone;

    /**
     * 用户电话2
     */
    private String userPhoneTwo;

    /**
     * 用户电话3
     */
    private String userPhoneThree;

    /**
     * 性别
     */
    private Integer userGender;

    /**
     * 经度
     */
    private Double longitude;

    /**
     * 纬度
     */
    private Double latitude;

    /**
     * 状态
     */
    private Integer status;

    /**
     * 结果状态
     */
    private Integer resultStatus;

    /**
     * 返修订单ID
     */
    private Long reworkId;

    /**
     * 返修订单ID
     */
    private String remark;

    /**
     * 预约时间
     */
    private Date dutyTime;

    /**
     * 确认时间
     */
    private Date confirmTime;

    /**
     * 联系时间
     */
    private Date contactTime;

    /**
     * 师傅上门时间
     */
    private Date visitTime;

    /**
     * 厂商单
     */
    private OrderFactoryDRO orderFactory;

    /**
     * 维修完成时间
     */
    private Date completeTime;

    /**
     * 派单时间
     */
    private Date distributeTime;

    /**
     * 工程师接单时间
     */
    private Date takeTime;

    /**
     * 支付状态：1.未支付 2.支付中 3.部分支付 4.已支付 12.退款中 13.部分退款 14.已退款
     */
    private Integer payStatus;

    /**
     * 优惠总金额
     */
    private Integer discountAmount;

    /**
     * 退款工单ID
     */
    private Long refundTargetWorkId;

    /**
     * 订单金额
     */
    private Integer originalAmount;

    /**
     * 应收总额
     */
    private Integer totalAmount;

    /**
     * 订单服务项
     */
    private List<OrderServiceItemDRO> orderServiceItemList;

    /**
     * 服务项类型，目前仅支持两种类型： 1.工单服务项 2.故障服务项
     * 若值不等于2，则均作为值等于1处理
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_ORDER
     * @see com.zmn.oms.common.constant.OrderConsts#SERVICE_ITEM_TYPE_FAULT
     */
    private Integer servItemType;

    /**
     * 业务模式：1平台，自营
     */
    private Integer bizMode;

    /**
     * 下单业务模式：1平台，自营
     */
    private Integer bizModeSource;

    /**
     * 订单业务类型：1保外业务（C），2保内业务（F），3工程业务（B）
     */
    private Integer bizType;

    /**
     * 业务线
     */
    private Integer bizLine;

    /**
     * 是否测试单（1：非测试单，2：测试单）
     */
    private Integer test;

    /**
     * 产品分组ID
     */
    private Integer servProductGroupId;

    /**
     * 产品分组name
     */
    private String servProductGroupName;


    /**
     * 手机号码
     */
    private String[] phone;

    /**
     * 手机号码后四位
     */
    private String[] phoneEnd4;
    /**
     * 难度系数ID
     */
    private Integer difficultRatioId;

    /**
     * 订单标签
     */
    private List<OrderTagDRO> orderTagList;

    /**
     * 订单创建时间
     */
    private Date createTime;

    /**
     * 计价器-有效使用
     * @see OrderTagConsts#TAG_ID_WORK_QUOTATION_VALID
     */
    private Boolean isQuotationValid;

    /**
     * 优惠
     */
    private  List<OrderDetailDiscountDRO> orderDiscountList;

    /**
     * 一口价标识 ：1 非， 2 是
     */
    private Integer finalPrice;

    /**
     * 产品信息
     */
    private String productInfo;

    /**
     * 工程师主管id
     */
    private Integer masterSupervisorId;

    /**
     * 是否要客：1不是vvip，2是vvip
     */
    private Integer vvip;

}
